// const listToTree = (items, parent) => {
//   const menuObj = {}
//   items.forEach(item => {
//     item.children = []
//     if (!item.parent) {
//       item.parent = null
//     }
//     menuObj[item._id] = item
//   })
//   return items.filter(f => {
//     if (f.parent !== parent) {
//       // f.path = menuObj[f.parent].path + f.path
//       if (menuObj[f.parent]) {
//         menuObj[f.parent].children.push(f)
//       } else {
//         f.parent = null
//       }
//
//       return false
//     }
//     return true
//   })
// }

// const handleNoChildren = (item) => {
//   if (!item.children || item.children.length === 0) {
//     item.children = {
//       path: item.path,
//       component: item.component,
//       meta: item.meta
//     }
//     item.redirect = ''
//     item.component = 'Layout'
//     return item
//   }
// }

// const changeListToMenu = function(menus) {
//   listToTree(menus, null)
//   menus.forEach(item => {
//     if (item.children.length < 1) {
//       item.children = undefined
//       item.redirect = undefined
//     } else {
//       item.redirect = item.children[0].path
//     }
//     item.meta = { title: item.title, icon: item.icon }
//   })
//   console.log('changeListToMenu:result', menus)
//   const result = menus.filter(item => !item.parent)
//   result.forEach(item => {
//     console.log('🚀 ~ file: list2tree.js ~ line 52 ~ changeListToMenu ~ item', item.children.length)
//   })
//   return result
// }

const changeListToMenu = function(list) {
  const menuObj = []
  list.forEach((item) => {
    item.meta = { title: item.title, icon: item.icon }
    item.children = []
    item.redirect = ''
    if (!item.parent) {
      item.parent = null
    }
    menuObj[item._id] = item
  })
  // filter 方法,不改变原有的队列list,根据返回值(true保留/false删除节点),重新组装成新的数组
  const filter_list = list.filter((f) => {
    if (menuObj[f.parent]) {
      menuObj[f.parent].children.push(f) // 移动该菜单到所对应的上级菜单的children中
      return false // 从list中删除该菜单项
    } else {
      f.parent = null // 不存在父菜单项,故而将该菜单置顶
      return true // 保留该菜单项
    }
  })

  // 解决没有子菜单的问题
  filter_list.forEach((f) => {
    if (f.children && f.children.length < 1) {
      if (f.component !== 'Layout') {
        f.redirect = f.path
        const children = {
          path: f.path,
          component: f.component,
          meta: {
            title: f.title,
            icon: f.icon
          }
        }
        f.path = 'aa' + Math.random() * 100 // path 作为router的key,有可能重复的问题
        f.children.push(children)
        // console.log(f.children)
        f.component = 'Layout'
      }
    }
  })
  return filter_list
}
export default changeListToMenu
